Some existing systems perform operations on virtual machines (VMs) in response to manual input from administrators. One or more VMs may be created, cloned, deployed, or relocated on destination hosts and destination datastores specified by the administrators. For example, operations may be performed on VMware's vApp (e.g., a logical entity representing one or more VMs) and VMware's Virtual Appliance (e.g., a VM image). The administrators select suitable destination hosts and destination datastores by manually scanning available hosts/datastores and selecting the most suitable candidates. For example, when scanning the available hosts/datastores, administrators compare the resource constraints of the VMs to be created with the resources available to each of the available hosts/datastores. Some of the exemplary resource constraints or characteristics include disk space, processor, memory, network constraints (e.g., port group availability and configuration), and host compatibility (e.g., some VMs cannot be cloned or deployed onto particular host and datastore versions).
Even if the administrators select compatible candidate hosts/datastores, it is difficult for the administrators to evaluate and select the best candidate hosts/datastores (e.g., ones that will execute the VMs without any performance bottlenecks). Additionally, the resources of the hosts/datastores change in real-time, sometimes rendering unsuitable the hosts/datastores that were previously suitable and selected by the administrators. When attempting to clone or deploy large numbers of VMs at one time using batch operations, administrators often end up selecting hosts/datastores that are overloaded or resource constrained. Further, with some of the existing systems, errors occurring during creation or deployment of the VMs require manual intervention from the administrators. In datacenters with large numbers of hosts, selecting the suitable host/datastore candidates can be complex, tedious, time consuming, and error prone with sub-optimal host/datastore selection and deployment.